filtr podle numericke hodnoty
Otázka od: Lada
11. 11. 2004 2:02
Zdravim vsechny,
zejmena ty kdoz mi kdy pomohli.. mam problem..
Po delsi dobe jsem se opet dostal k ponekud zacatecnickemu badani a
nemuzu za boha prijit na to, jak v tabulce efektivne filtrovat podle
ciselne hodnoty..
Potrebuju nastavit dotaz tak, abych pri zadani ciselne hodnoty v
'editCastka' dostal v pripade zadani napr.
'25' - pouze hodnoty v radu desitek (vcetne desetinnych mist)
'250' - pouze hodnoty v radu stovek (vcetne desetinnych mist) atd...
muj kod filtruje zaznamy pouze na vyskyt znaku.. tudiz samozrejme
ignoruje rady... Nicmene more pokusu s
'IBQuery1.ParamByName('p4').AsInteger:= ...' jsem podniknul.. zkratka uz
nevim.. Muj kod:
(jde mi o parametr p4...)
procedure TForm1.editCastkaChange(Sender: TObject);
begin
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('Select Datum, Firma, VS, Castka, Cislouctu, Banka,
NV_VP,'+
'ID from Vypisy');
IBQuery1.SQL.Add('Where (UPPER (Firma Collate PXW_CSY) LIKE :p1) and'+
'(UPPER (VS Collate PXW_CSY) LIKE :p2) and'+
'(UPPER (Cislouctu Collate PXW_CSY) LIKE :p3) and'+
'(Castka LIKE :p4) Order by Datum, Firma');
IBQuery1.ParamByName('p1').AsString :=
'%'+AnsiUpperCase(editFirma.Text)+'%';
IBQuery1.ParamByName('p2').AsString := '%'+AnsiUpperCase(editVS.Text)+'%';
IBQuery1.ParamByName('p3').AsString := '%'+AnsiUpperCase(editCU.Text)+'%';
IBQuery1.ParamByName('p4').AsString := editCastka.Text + '%';
IBQuery1.Active := true;
end;
Za kazdou radu moc dekuju a podle situace preju dobrou noc, nebo krasnej
den!
Lada
Odpovedá: Lada
11. 11. 2004 2:24
Lada napsal(a):
>Zdravim vsechny,
>
>zejmena ty kdoz mi kdy pomohli.. mam problem..
>Po delsi dobe jsem se opet dostal k ponekud zacatecnickemu badani a
>nemuzu za boha prijit na to, jak v tabulce efektivne filtrovat podle
>ciselne hodnoty..
>Potrebuju nastavit dotaz tak, abych pri zadani ciselne hodnoty v
>'editCastka' dostal v pripade zadani napr.
>
>'25' - pouze hodnoty v radu desitek (vcetne desetinnych mist)
>'250' - pouze hodnoty v radu stovek (vcetne desetinnych mist) atd...
>
>muj kod filtruje zaznamy pouze na vyskyt znaku.. tudiz samozrejme
>ignoruje rady... Nicmene more pokusu s
>'IBQuery1.ParamByName('p4').AsInteger:= ...' jsem podniknul.. zkratka uz
>nevim.. Muj kod:
>(jde mi o parametr p4...)
>
>procedure TForm1.editCastkaChange(Sender: TObject);
>begin
>
> IBQuery1.SQL.Clear;
>
IBQuery1.SQL.Add('Select Datum, Firma, VS, Castka, Cislouctu, Banka,
>NV_VP,'+
> 'ID from Vypisy');
> IBQuery1.SQL.Add('Where (UPPER (Firma Collate PXW_CSY) LIKE :p1) and'+
> '(UPPER (VS Collate PXW_CSY) LIKE :p2) and'+
> '(UPPER (Cislouctu Collate PXW_CSY) LIKE :p3) and'+
> '(Castka LIKE :p4) Order by Datum, Firma');
>
> IBQuery1.ParamByName('p1').AsString :=
>'%'+AnsiUpperCase(editFirma.Text)+'%';
> IBQuery1.ParamByName('p2').AsString := '%'+AnsiUpperCase(editVS.Text)+'%';
> IBQuery1.ParamByName('p3').AsString := '%'+AnsiUpperCase(editCU.Text)+'%';
> IBQuery1.ParamByName('p4').AsString := editCastka.Text + '%';
>
> IBQuery1.Active := true;
>
>end;
>
>Za kazdou radu moc dekuju a podle situace preju dobrou noc, nebo krasnej
>den!
>
>Lada
>
Moc se omlouvam za pokracovani meho mikroproblemu.. ale zapomel jsem
dodat, ze v DB je pole 'Castka' typu Numeric(6,2)
a hraju si s FB1.5 v D6
Diky,
Lada
Odpovedá: Jan Novak
13. 11. 2004 11:51
> '(Castka LIKE :p4) Order by Datum, Firma');
> IBQuery1.ParamByName('p4').AsString := editCastka.Text + '%';
> v DB je pole 'Castka' typu Numeric(6,2)
Bud ten parametr davej .AsFloat, nebo v SQL prikazu hodnotu pole
'Castka' explicitne preved na retezec. Umi tvuj databazovy stroj
pouzit LIKE na Numeric?